New file with a set of tests for GtkCellRendererText. The idea is to run a
authorFederico Mena Quintero <federico@ximian.com>
Thu, 29 Sep 2005 00:19:32 +0000 (00:19 +0000)
committerFederico Mena Quintero <federico@src.gnome.org>
Thu, 29 Sep 2005 00:19:32 +0000 (00:19 +0000)
2005-09-28  Federico Mena Quintero  <federico@ximian.com>

* tests/testcellrenderertext.c: New file with a set of tests for
GtkCellRendererText.  The idea is to run a text renderer through
most of its interesting property values to see that it works
correctly.

* tests/Makefile.am: Added testcellrenderertext.

* gtk/gtkfilechooserdefault.c (load_set_model): Mark the
entry/exit of this function for profiling.
(gtk_file_chooser_default_style_set): Mark the start/end of the
calls to the parent class and the the signal emission for profiling.

ChangeLog
ChangeLog.pre-2-10
gtk/gtkfilechooserdefault.c
tests/Makefile.am
tests/autotestfilechooser.c
tests/testcellrenderertext.c [new file with mode: 0644]

index dbadf1ab689af23430250180697f4e65f0a659ac..bef2a58412c0e90207437c0e161a552bb5ea0035 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -37,7 +37,6 @@
        * modules/input/imime.c: Include <config.h>. (#317444, Kazuki
        Iwamoto)
 
->>>>>>> 1.7129
 2005-09-27  Federico Mena Quintero  <federico@ximian.com>
 
        Don't reload the current folder unnecessarily on ::map().
index dbadf1ab689af23430250180697f4e65f0a659ac..bef2a58412c0e90207437c0e161a552bb5ea0035 100644 (file)
@@ -37,7 +37,6 @@
        * modules/input/imime.c: Include <config.h>. (#317444, Kazuki
        Iwamoto)
 
->>>>>>> 1.7129
 2005-09-27  Federico Mena Quintero  <federico@ximian.com>
 
        Don't reload the current folder unnecessarily on ::map().
index 4d5cdbd46fbeb467b58f189816ca6d06ec7f4c5a..fb4f253f35833a1a052a2d6d2bbb093d029056cf 100644 (file)
@@ -114,9 +114,9 @@ _gtk_file_chooser_profile_log (const char *func, int indent, const char *msg1, c
     profile_add_indent (indent);
 
   if (profile_indent == 0)
-    str = g_strdup_printf ("MARK: %s %s %s", func, msg1 ? msg1 : "", msg2 ? msg2 : "");
+    str = g_strdup_printf ("MARK: %s %s %s", func ? func : "", msg1 ? msg1 : "", msg2 ? msg2 : "");
   else
-    str = g_strdup_printf ("MARK: %*c %s %s %s", profile_indent - 1, ' ', func, msg1 ? msg1 : "", msg2 ? msg2 : "");
+    str = g_strdup_printf ("MARK: %*c %s %s %s", profile_indent - 1, ' ', func ? func : "", msg1 ? msg1 : "", msg2 ? msg2 : "");
 
   access (str, F_OK);
   g_free (str);
@@ -3097,6 +3097,9 @@ shortcuts_list_create (GtkFileChooserDefault *impl)
   /* Tree */
 
   impl->browse_shortcuts_tree_view = gtk_tree_view_new ();
+#ifdef PROFILE_FILE_CHOOSER
+  g_object_set_data (impl->browse_shortcuts_tree_view, "fmq-name", "shortcuts");
+#endif
   g_signal_connect (impl->browse_shortcuts_tree_view, "key-press-event",
                    G_CALLBACK (tree_view_keybinding_cb), impl);
   g_signal_connect (impl->browse_shortcuts_tree_view, "popup-menu",
@@ -3605,6 +3608,9 @@ create_file_list (GtkFileChooserDefault *impl)
   /* Tree/list view */
 
   impl->browse_files_tree_view = gtk_tree_view_new ();
+#ifdef PROFILE_FILE_CHOOSER
+  g_object_set_data (impl->browse_files_tree_view, "fmq-name", "file_list");
+#endif
   g_object_set_data (G_OBJECT (impl->browse_files_tree_view), I_("GtkFileChooserDefault"), impl);
   atk_object_set_name (gtk_widget_get_accessible (impl->browse_files_tree_view), _("Files"));
 
@@ -4574,13 +4580,17 @@ gtk_file_chooser_default_style_set (GtkWidget *widget,
 
   impl = GTK_FILE_CHOOSER_DEFAULT (widget);
 
+  profile_msg ("    parent class style_set start", NULL);
   if (GTK_WIDGET_CLASS (parent_class)->style_set)
     GTK_WIDGET_CLASS (parent_class)->style_set (widget, previous_style);
+  profile_msg ("    parent class style_set end", NULL);
 
   if (gtk_widget_has_screen (GTK_WIDGET (impl)))
     change_icon_theme (impl);
 
+  profile_msg ("    emit default-size-changed start", NULL);
   g_signal_emit_by_name (widget, "default-size-changed");
+  profile_msg ("    emit default-size-changed end", NULL);
 
   profile_end ("end", NULL);
 }
@@ -4858,9 +4868,12 @@ set_busy_cursor (GtkFileChooserDefault *impl,
 static void
 load_set_model (GtkFileChooserDefault *impl)
 {
+  profile_start ("start", NULL);
+
   g_assert (impl->browse_files_model != NULL);
   g_assert (impl->sort_model == NULL);
 
+  profile_msg ("    gtk_tree_model_sort_new_with_model start", NULL);
   impl->sort_model = (GtkTreeModelSort *)gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (impl->browse_files_model));
   gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->sort_model), FILE_LIST_COL_NAME, name_sort_func, impl, NULL);
   gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->sort_model), FILE_LIST_COL_SIZE, size_sort_func, impl, NULL);
@@ -4868,15 +4881,20 @@ load_set_model (GtkFileChooserDefault *impl)
   gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (impl->sort_model), NULL, NULL, NULL);
   gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (impl->sort_model), FILE_LIST_COL_NAME, GTK_SORT_ASCENDING);
   impl->list_sort_ascending = TRUE;
+  profile_msg ("    gtk_tree_model_sort_new_with_model end", NULL);
 
   g_signal_connect (impl->sort_model, "sort-column-changed",
                    G_CALLBACK (list_sort_column_changed_cb), impl);
 
+  profile_msg ("    gtk_tree_view_set_model start", NULL);
   gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view),
                           GTK_TREE_MODEL (impl->sort_model));
   gtk_tree_view_columns_autosize (GTK_TREE_VIEW (impl->browse_files_tree_view));
   gtk_tree_view_set_search_column (GTK_TREE_VIEW (impl->browse_files_tree_view),
                                   GTK_FILE_SYSTEM_MODEL_DISPLAY_NAME);
+  profile_msg ("    gtk_tree_view_set_model end", NULL);
+
+  profile_end ("end", NULL);
 }
 
 /* Timeout callback used when the loading timer expires */
index 4b04b7e1fa6077e21ec365b50e1a1c4fcef6c786..01f9ae02c804953bf909246f5500459b6fd49a65 100644 (file)
@@ -34,6 +34,7 @@ noinst_PROGRAMS =                     \
        testcalendar                    \
        testcombo                       \
        testcombochange                 \
+       testcellrenderertext            \
        testdnd                         \
        testellipsise                   \
        testentrycompletion             \
@@ -83,6 +84,7 @@ testcairo_DEPENDENCIES = $(TEST_DEPS)
 testcalendar_DEPENDENCIES = $(TEST_DEPS)
 testcombo_DEPENDENCIES = $(TEST_DEPS)
 testcombochange_DEPENDENCIES = $(TEST_DEPS)
+testcellrenderertext_DEPENDENCIES = $(TEST_DEPS)
 testdnd_DEPENDENCIES = $(TEST_DEPS)
 testellipsise_DEPENDENCIES = $(TEST_DEPS)
 testentrycompletion_DEPENDENCIES = $(TEST_DEPS)
@@ -122,6 +124,7 @@ testcairo_LDADD = $(LDADDS)
 testcalendar_LDADD = $(LDADDS)
 testcombo_LDADD = $(LDADDS)
 testcombochange_LDADD = $(LDADDS)
+testcellrenderertext_LDADD = $(LDADDS)
 testdnd_LDADD = $(LDADDS)
 testellipsise_LDADD = $(LDADDS)
 testentrycompletion_LDADD = $(LDADDS)
index bc9002ff68fb9e4fb81746c49345457b7ada102f..10f26c591f5ca7a1fcf499444ac6733a6acfeabf 100644 (file)
@@ -1,3 +1,26 @@
+/* GTK - The GIMP Toolkit
+ * autotestfilechooser.c: Automated unit tests for the GtkFileChooser widget
+ * Copyright (C) 2005, Novell, Inc.
+ *
+ * Authors:
+ *   Federico Mena-Quintero <federico@novell.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
 #define GTK_FILE_SYSTEM_ENABLE_UNSUPPORTED
 
 #include <config.h>
diff --git a/tests/testcellrenderertext.c b/tests/testcellrenderertext.c
new file mode 100644 (file)
index 0000000..1a820b7
--- /dev/null
@@ -0,0 +1,273 @@
+/* GTK - The GIMP Toolkit
+ * testcellrenderertext.c: Tests for the various properties of GtkCellRendererText
+ * Copyright (C) 2005, Novell, Inc.
+ *
+ * Authors:
+ *   Federico Mena-Quintero <federico@novell.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtk.h>
+
+#define COL_BACKGROUND 14
+#define COL_LINE_NUM   15
+#define NUM_COLS       16 /* change this when adding columns */
+
+struct cell_params {
+  char *description;                   /* 0 */
+  char *test;                          /* 1 */
+  int xpad;                            /* 2 */
+  int ypad;                            /* 3 */
+  double xalign;                       /* 4 */
+  double yalign;                       /* 5 */
+  gboolean sensitive;                  /* 6 */
+  int width;                           /* 7 */
+  int height;                          /* 8 */
+  int width_chars;                     /* 9 */
+  int wrap_width;                      /* 10 */
+  PangoWrapMode wrap_mode;             /* 11 */
+  gboolean single_paragraph_mode;      /* 12 */
+  PangoEllipsizeMode ellipsize;                /* 13 */
+  /* COL_BACKGROUND     */             /* 14 */
+  /* COL_LINE_NUM */                   /* 15 */
+};
+
+#define WO PANGO_WRAP_WORD
+#define CH PANGO_WRAP_CHAR
+#define WC PANGO_WRAP_WORD_CHAR
+
+#define NO PANGO_ELLIPSIZE_NONE
+#define ST PANGO_ELLIPSIZE_START
+#define MI PANGO_ELLIPSIZE_MIDDLE
+#define EN PANGO_ELLIPSIZE_END
+
+
+#define TESTL "LEFT JUSTIFIED This is really truly verily some very long text\n\330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205"
+
+#define TESTC "CENTERED This is really truly verily some very long text\n\330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205"
+
+#define TESTR "RIGHT JUSTIFIED This is really truly verily some very long text\n\330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205"
+
+static const struct cell_params cell_params[] = {
+  { "xp yp xa ya se wi he wc ww wm sp el", "",    0,  0, 0.0, 0.5, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 0 */
+
+  /* Test alignment */
+
+  { "0  0  0  0  T  -1 -1 -1 -1 CH F  NO", TESTL,  0,  0, 0.0, 0.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 1 */
+  { "0  0  .5 0  T  -1 -1 -1 -1 CH F  NO", TESTC,  0,  0, 0.5, 0.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 2 */
+  { "0  0  1  0  T  -1 -1 -1 -1 CH F  NO", TESTR,  0,  0, 1.0, 0.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 3 */
+  { "0  0  0  .5 T  -1 -1 -1 -1 CH F  NO", TESTL,  0,  0, 0.0, 0.5, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 4 */
+  { "0  0  .5 .5 T  -1 -1 -1 -1 CH F  NO", TESTC,  0,  0, 0.5, 0.5, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 5 */
+  { "0  0  1  .5 T  -1 -1 -1 -1 CH F  NO", TESTR,  0,  0, 1.0, 0.5, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 6 */
+  { "0  0  0  1  T  -1 -1 -1 -1 CH F  NO", TESTL,  0,  0, 0.0, 1.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 7 */
+  { "0  0  .5 1  T  -1 -1 -1 -1 CH F  NO", TESTC,  0,  0, 0.5, 1.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 8 */
+  { "0  0  1  1  T  -1 -1 -1 -1 CH F  NO", TESTR,  0,  0, 1.0, 1.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 9 */
+
+  /* Test padding */
+
+  { "10 10 0  0  T  -1 -1 -1 -1 CH F  NO", TESTL, 10, 10, 0.0, 0.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 10 */
+  { "10 10 .5 0  T  -1 -1 -1 -1 CH F  NO", TESTC, 10, 10, 0.5, 0.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 11 */
+  { "10 10 1  0  T  -1 -1 -1 -1 CH F  NO", TESTR, 10, 10, 1.0, 0.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 12 */
+  { "10 10 0  .5 T  -1 -1 -1 -1 CH F  NO", TESTL, 10, 10, 0.0, 0.5, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 13 */
+  { "10 10 .5 .5 T  -1 -1 -1 -1 CH F  NO", TESTC, 10, 10, 0.5, 0.5, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 14 */
+  { "10 10 1  .5 T  -1 -1 -1 -1 CH F  NO", TESTR, 10, 10, 1.0, 0.5, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 15 */
+  { "10 10 0  1  T  -1 -1 -1 -1 CH F  NO", TESTL, 10, 10, 0.0, 1.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 16 */
+  { "10 10 .5 1  T  -1 -1 -1 -1 CH F  NO", TESTC, 10, 10, 0.5, 1.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 17 */
+  { "10 10 1  1  T  -1 -1 -1 -1 CH F  NO", TESTR, 10, 10, 1.0, 1.0, TRUE,  -1, -1, -1, -1, CH, FALSE, NO }, /* 18 */
+
+
+};
+
+static GtkListStore *
+create_list_store (void)
+{
+  GtkListStore *list_store;
+  int i;
+
+  list_store = gtk_list_store_new (NUM_COLS,
+                                  G_TYPE_STRING,               /* 0 */ 
+                                  G_TYPE_STRING,               /* 1 */ 
+                                  G_TYPE_INT,                  /* 2 */ 
+                                  G_TYPE_INT,                  /* 3 */ 
+                                  G_TYPE_DOUBLE,               /* 4 */ 
+                                  G_TYPE_DOUBLE,               /* 5 */ 
+                                  G_TYPE_BOOLEAN,              /* 6 */ 
+                                  G_TYPE_INT,                  /* 7 */ 
+                                  G_TYPE_INT,                  /* 8 */ 
+                                  G_TYPE_INT,                  /* 9 */ 
+                                  G_TYPE_INT,                  /* 10 */
+                                  PANGO_TYPE_WRAP_MODE,        /* 11 */
+                                  G_TYPE_BOOLEAN,              /* 12 */
+                                  PANGO_TYPE_ELLIPSIZE_MODE,   /* 13 */
+                                  G_TYPE_STRING,               /* 14 */
+                                  G_TYPE_STRING);              /* 15 */
+
+  for (i = 0; i < G_N_ELEMENTS (cell_params); i++)
+    {
+      const struct cell_params *p;
+      GtkTreeIter iter;
+      char buf[50];
+
+      p = cell_params + i;
+
+      snprintf (buf, sizeof (buf), "%d", i);
+
+      gtk_list_store_append (list_store, &iter);
+      gtk_list_store_set (list_store, &iter,
+                         0, p->description,
+                         1, p->test,
+                         2, p->xpad,
+                         3, p->ypad,
+                         4, p->xalign,
+                         5, p->yalign,
+                         6, p->sensitive,
+                         7, p->width,
+                         8, p->height,
+                         9, p->width_chars,
+                         10, p->wrap_width,
+                         11, p->wrap_mode,
+                         12, p->single_paragraph_mode,
+                         13, p->ellipsize,
+                         14, (i % 2 == 0) ? "gray50" : "gray80",
+                         15, buf,
+                         -1);
+    }
+
+  return list_store;
+}
+
+static GtkWidget *
+create_tree (gboolean rtl)
+{
+  GtkWidget *sw;
+  GtkWidget *treeview;
+  GtkListStore *list_store;
+  GtkTreeViewColumn *column;
+  GtkCellRenderer *renderer;
+  GdkPixbuf *pixbuf;
+
+  sw = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
+  gtk_widget_set_direction (sw, rtl ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
+
+  list_store = create_list_store ();
+
+  treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store));
+  gtk_widget_set_direction (treeview, rtl ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
+  gtk_container_add (GTK_CONTAINER (sw), treeview);
+
+  /* Line number */
+
+  renderer = gtk_cell_renderer_text_new ();
+  column = gtk_tree_view_column_new_with_attributes ("#",
+                                                    renderer,
+                                                    "text", COL_LINE_NUM,
+                                                    NULL);
+  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+  /* Description */
+
+  renderer = gtk_cell_renderer_text_new ();
+  g_object_set (renderer,
+               "font", "monospace",
+               NULL);
+  column = gtk_tree_view_column_new_with_attributes ("Description",
+                                                    renderer,
+                                                    "text", 0,
+                                                    NULL);
+  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+  /* Test text */
+
+  renderer = gtk_cell_renderer_text_new ();
+  column = gtk_tree_view_column_new_with_attributes ("Test",
+                                                    renderer,
+                                                    "text", 1,
+                                                    "xpad", 2,
+                                                    "ypad", 3,
+                                                    "xalign", 4,
+                                                    "yalign", 5,
+                                                    "sensitive", 6,
+                                                    "width", 7,
+                                                    "height", 8,
+                                                    "width_chars", 9,
+                                                    "wrap_width", 10,
+                                                    "wrap_mode", 11,
+                                                    "single_paragraph_mode", 12,
+                                                    "ellipsize", 13,
+                                                    "cell_background", 14,
+                                                    NULL);
+  gtk_tree_view_column_set_resizable (column, TRUE);
+  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+  /* Empty column */
+
+  pixbuf = gdk_pixbuf_new_from_file ("apple-red.png", NULL);
+
+  renderer = gtk_cell_renderer_pixbuf_new ();
+  g_object_set (renderer,
+               "pixbuf", pixbuf,
+               "xpad", 10,
+               "ypad", 10,
+               NULL);
+  column = gtk_tree_view_column_new_with_attributes ("Empty",
+                                                    renderer,
+                                                    NULL);
+  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+  return sw;
+}
+
+int
+main (int argc, char **argv)
+{
+  GtkWidget *window;
+  GtkWidget *vbox;
+  GtkWidget *label;
+  GtkWidget *tree;
+
+  gtk_init (&argc, &argv);
+
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  g_signal_connect (window, "destroy",
+                   G_CALLBACK (gtk_main_quit), NULL);
+  gtk_container_set_border_width (GTK_CONTAINER (window), 12);
+
+  vbox = gtk_vbox_new (FALSE, 12);
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+
+  /* LTR */
+
+  label = gtk_label_new ("Left to right");
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  tree = create_tree (FALSE);
+  gtk_box_pack_start (GTK_BOX (vbox), tree, TRUE, TRUE, 0);
+
+  /* RTL */
+
+  label = gtk_label_new ("Right to left");
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  tree = create_tree (TRUE);
+  gtk_box_pack_start (GTK_BOX (vbox), tree, TRUE, TRUE, 0);
+
+  gtk_widget_show_all (window);
+  gtk_main ();
+
+  return 0;
+}